/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package QuestaoView;

import DisciplinaTopico.QuestaoDAOException;
import DisciplinaTopico.Topico;
import DisciplinaTopico.TopicoDAOException;
import DisciplinaTopicoView.TopicoDAO;
import Media.MediaController;
import Questao.Dificuldade;
import Questao.Questao;
import Questao.QuestaoDiscursiva;
import Questao.QuestaoMultiplaEscolha;
import java.awt.TrayIcon;
import javax.swing.JOptionPane;

/**
 *
 * @author Raphael Rodrigues
 */
public class PropriedadesQuestaoView extends javax.swing.JFrame {

    boolean isAddition;
    Topico topico;
    TopicoDAO topicoDAO;
    Questao questaoCorrente;
    /**
     * Creates new form PropriedadesQuestaoView
     */
    public PropriedadesQuestaoView(Questao questao, TopicoDAO topicoDAO, boolean isAddition) {
        initComponents();
        
        this.questaoCorrente = questao;
        this.topicoDAO = topicoDAO;
        this.isAddition = isAddition;
        
        if(!isAddition)
            topico = topicoDAO.obterTopicoQuestao(questao);
        
        inicializaComponentes();
    }
    
    public PropriedadesQuestaoView() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane3 = new javax.swing.JScrollPane();
        tbaEnunciado = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        tbaResposta1 = new javax.swing.JTextArea();
        jScrollPane5 = new javax.swing.JScrollPane();
        tbaResposta3 = new javax.swing.JTextArea();
        jLabel6 = new javax.swing.JLabel();
        jScrollPane6 = new javax.swing.JScrollPane();
        tbaResposta4 = new javax.swing.JTextArea();
        cmbTipoQuestao = new javax.swing.JComboBox();
        jLabel8 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        cmbDificuldade = new javax.swing.JComboBox();
        jScrollPane4 = new javax.swing.JScrollPane();
        tbaResposta2 = new javax.swing.JTextArea();
        jLabel2 = new javax.swing.JLabel();
        cmbRespostaCorreta = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        btnSalvar = new javax.swing.JButton();
        jLabel4 = new javax.swing.JLabel();
        cbxTopicos = new javax.swing.JComboBox();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Propriedades da Questão");

        tbaEnunciado.setColumns(20);
        tbaEnunciado.setLineWrap(true);
        tbaEnunciado.setRows(5);
        jScrollPane3.setViewportView(tbaEnunciado);

        tbaResposta1.setColumns(20);
        tbaResposta1.setLineWrap(true);
        tbaResposta1.setRows(5);
        tbaResposta1.setEnabled(false);
        jScrollPane2.setViewportView(tbaResposta1);

        tbaResposta3.setColumns(20);
        tbaResposta3.setLineWrap(true);
        tbaResposta3.setRows(5);
        tbaResposta3.setEnabled(false);
        jScrollPane5.setViewportView(tbaResposta3);

        jLabel6.setText("Respostas:");

        tbaResposta4.setColumns(20);
        tbaResposta4.setLineWrap(true);
        tbaResposta4.setRows(5);
        tbaResposta4.setEnabled(false);
        jScrollPane6.setViewportView(tbaResposta4);

        cmbTipoQuestao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmbTipoQuestaoActionPerformed(evt);
            }
        });

        jLabel8.setText("Dificuldade da questao:");

        jLabel3.setText("Tipo da questao:");

        tbaResposta2.setColumns(20);
        tbaResposta2.setLineWrap(true);
        tbaResposta2.setRows(5);
        tbaResposta2.setEnabled(false);
        jScrollPane4.setViewportView(tbaResposta2);

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel2.setText("Propriedades da Questão");

        cmbRespostaCorreta.setEnabled(false);

        jLabel1.setText("Enunciado:");

        jLabel9.setText("Resposta Correta:");

        btnSalvar.setText("Salvar");
        btnSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalvarActionPerformed(evt);
            }
        });

        jLabel4.setText("Topico da Questao:");

        cbxTopicos.setSelectedIndex(-1);
        cbxTopicos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cbxTopicosActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel8)
                            .addComponent(jLabel9)
                            .addComponent(jLabel6)
                            .addComponent(jLabel4))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jScrollPane6)
                            .addComponent(jScrollPane5)
                            .addComponent(jScrollPane4)
                            .addComponent(jScrollPane3)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(cmbDificuldade, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 83, Short.MAX_VALUE)
                                .addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(cmbTipoQuestao, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(jScrollPane2)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addComponent(cmbRespostaCorreta, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(cbxTopicos, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 221, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGap(0, 0, Short.MAX_VALUE))))
                    .addComponent(btnSalvar, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(cbxTopicos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel8)
                        .addComponent(cmbDificuldade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(cmbTipoQuestao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel3)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(6, 6, 6)
                        .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jLabel6))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmbRespostaCorreta, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel9))
                .addComponent(btnSalvar)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void cmbTipoQuestaoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbTipoQuestaoActionPerformed
        if(this.cmbTipoQuestao.getSelectedItem() != null && this.cmbTipoQuestao.isEnabled())
        {
            this.tbaResposta1.setEnabled(true);

            boolean ehDiscursiva = false;
            if(this.cmbTipoQuestao.getSelectedItem().toString().equalsIgnoreCase("Discursiva"))
                ehDiscursiva = true;

            trocaStatusCamposQuestoes(ehDiscursiva);
            populaComboRespostaCorreta(ehDiscursiva);
        }
        
    }//GEN-LAST:event_cmbTipoQuestaoActionPerformed

    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalvarActionPerformed
        if(validaPropriedades())
        {
            Topico topicoSelecionado = (Topico)this.cbxTopicos.getSelectedItem();

            if(topicoSelecionado != null)
            {
                String tipoSelecionado = this.cmbTipoQuestao.getSelectedItem().toString();
                String enunciado = this.tbaEnunciado.getText();
                Dificuldade dificuldade = (Dificuldade)this.cmbDificuldade.getSelectedItem();

                boolean ehDiscursiva = false;
                if(tipoSelecionado.equalsIgnoreCase("Discursiva"))
                    ehDiscursiva = true;

                try
                {
                    String mensagemSucesso = "";

                    if(isAddition)
                    {
                        SalvaAdicao(ehDiscursiva, enunciado, dificuldade);
                        mensagemSucesso = "A questão foi cadastrada com sucesso.";
                    }
                    else
                    {
                        SalvaEdicao(ehDiscursiva, enunciado, dificuldade);
                        mensagemSucesso = "A questão foi editada com sucesso";
                    }

                    JOptionPane.showMessageDialog(null, mensagemSucesso, "Operação concluída", TrayIcon.MessageType.INFO.ordinal(), MediaController.createImageIcon("Imagens/Success.png"));
                    this.setVisible(false);
                }
                catch (TopicoDAOException topicoEx)
                {
                    MediaController.showErrorMessage( "A operação não foi executada com sucesso. Exceção: " + topicoEx.getMessage(), "Erro");
                }
                catch(QuestaoDAOException questaoEx)
                {
                    MediaController.showErrorMessage( "A operação não foi executada com sucesso. Exceção: " + questaoEx.getMessage(), "Erro");
                }
                catch(Exception ex)
                {
                    MediaController.showErrorMessage( "A operação não foi executada com sucesso. Exceção: " + ex.getMessage(), "Erro");
                }
            }
            else
                JOptionPane.showMessageDialog(null, "Selecione um tópico", "Erro Validação", TrayIcon.MessageType.INFO.ordinal());
        }
    }//GEN-LAST:event_btnSalvarActionPerformed

    private void cbxTopicosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbxTopicosActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_cbxTopicosActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(PropriedadesQuestaoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(PropriedadesQuestaoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(PropriedadesQuestaoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(PropriedadesQuestaoView.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new PropriedadesQuestaoView().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnSalvar;
    private javax.swing.JComboBox cbxTopicos;
    private javax.swing.JComboBox cmbDificuldade;
    private javax.swing.JComboBox cmbRespostaCorreta;
    private javax.swing.JComboBox cmbTipoQuestao;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JTextArea tbaEnunciado;
    private javax.swing.JTextArea tbaResposta1;
    private javax.swing.JTextArea tbaResposta2;
    private javax.swing.JTextArea tbaResposta3;
    private javax.swing.JTextArea tbaResposta4;
    // End of variables declaration//GEN-END:variables
  
    private void inicializaComponentes()
    {
        populaComboTopicos();
        populaComboTipos();
        populaComboDificuldade();
        
        if(!isAddition)
        {
            preenchePropriedadesQuestao(questaoCorrente);
        }
    }
    
    private void populaComboTopicos()
    {
        try
        {
            if(isAddition)
            {
                for (Topico tp : topicoDAO.getTopicos())
                {
                    this.cbxTopicos.addItem(tp);
                }

                this.cbxTopicos.setSelectedIndex(0);
            }
            else
            {
                cbxTopicos.addItem(topico);
                cbxTopicos.setSelectedIndex(0);
                cbxTopicos.setEnabled(false);
            }
        }
        catch(TopicoDAOException topicoEx)
        {
            MediaController.showErrorMessage("Não foi possível preencher a caixa de seleção de Tópicos. Exception: " + topicoEx.getMessage(), "Erro nos topicos");
        }
    }
    
    private void populaComboTipos()
    {
        this.cmbTipoQuestao.addItem("Discursiva");
        this.cmbTipoQuestao.addItem("Multipla Escolha");
        
        this.cmbTipoQuestao.setSelectedIndex(-1);
        this.cmbTipoQuestao.setSelectedItem(null);
    }
     
    private void populaComboDificuldade()
    {
        this.cmbDificuldade.addItem(Dificuldade.Facil);
        this.cmbDificuldade.addItem(Dificuldade.Medio);
        this.cmbDificuldade.addItem(Dificuldade.Dificil);

        this.cmbDificuldade.setSelectedIndex(-1);
    }
    
    private boolean validaPropriedades()
    {
        boolean ehValido = true;
        String mensagemErro = "";

        if(!validaCampoTexto(this.tbaEnunciado.getText()))
        {
            mensagemErro += "O campo 'Enunciado' é obrigatório.\n";
        }

        if(this.cmbDificuldade.getSelectedItem() == null)
        {
            mensagemErro += "O campo 'Dificuldade' é obrigatório.\n";
        }

        mensagemErro += validaTipoQuestao();

        if(this.cmbRespostaCorreta.getSelectedItem() == null)
        {
            mensagemErro += "O campo 'Resposta Correta' é obrigatório.\n";
        }

        if(!mensagemErro.equals(""))
        {
            ehValido = false;
            JOptionPane.showMessageDialog(null, mensagemErro, "Validação dos Campos", TrayIcon.MessageType.WARNING.ordinal(), MediaController.createImageIcon("Imagens/Warning.png"));
        }

        return ehValido;
    }
    
    private String validaTipoQuestao()
    {
        String mensagemErro = "";
        if(this.cmbTipoQuestao.getSelectedItem() == null)
        {
            mensagemErro += "O campo 'Tipo' é obrigatório.\n";
        }
        else
        {
            if(this.cmbTipoQuestao.getSelectedItem().equals("Discursiva"))
            {
                if(!validaCampoTexto(this.tbaResposta1.getText()))
                {
                    mensagemErro += "O campo 'Resposta' é obrigatório.\n";
                }
            }
            else
            {

                if(!validaCampoTexto(this.tbaResposta1.getText()) ||
                   !validaCampoTexto(this.tbaResposta2.getText()) ||
                   !validaCampoTexto(this.tbaResposta3.getText()) ||
                   !validaCampoTexto(this.tbaResposta4.getText()))
                {
                    mensagemErro += "O campo 'Resposta' é obrigatório.\n";
                }
            }
        }

        return mensagemErro;
    }

    private boolean validaCampoTexto(String texto)
    {
        return (texto != null && !texto.equals(""));
    }
    
    private void SalvaAdicao(boolean ehDiscursiva, String enunciado, Dificuldade dificuldade) throws TopicoDAOException, QuestaoDAOException
    {
        Questao novaQuestao = null;

        if(ehDiscursiva)
        {
            novaQuestao = new QuestaoDiscursiva(enunciado, dificuldade, this.tbaResposta1.getText());
        }
        else
        {
            String[] respostas = new String[4];

            respostas[0] = this.tbaResposta1.getText();
            respostas[1] = this.tbaResposta2.getText();
            respostas[2] = this.tbaResposta3.getText();
            respostas[3] = this.tbaResposta4.getText();

            int posicao = getPosicaoRespostaCorreta();

            novaQuestao = new QuestaoMultiplaEscolha(enunciado, dificuldade, respostas, respostas[posicao]);
        }
        
        Topico topicoSelecionado = (Topico)cbxTopicos.getSelectedItem();
        if(topicoSelecionado != null)
            topicoDAO.adiconarQuestao(topicoSelecionado, novaQuestao);
    }

    private void SalvaEdicao(boolean ehDiscursiva, String enunciado, Dificuldade dificuldade) throws TopicoDAOException, QuestaoDAOException
    {
        questaoCorrente.setPergunta(enunciado);
        questaoCorrente.setDificuldade(dificuldade);

        String resposta = "";
        if(ehDiscursiva)
        {
            resposta = this.tbaResposta1.getText();
        }
        else
        {
            String[] respostas = new String[4];

            respostas[0] = this.tbaResposta1.getText();
            respostas[1] = this.tbaResposta2.getText();
            respostas[2] = this.tbaResposta3.getText();
            respostas[3] = this.tbaResposta4.getText();

            int posicao = getPosicaoRespostaCorreta();

            resposta = respostas[posicao];
        }

        questaoCorrente.setResposta(resposta);

        topicoDAO.editarQuestao(topicoDAO.obterTopicoQuestao(questaoCorrente), questaoCorrente);
    }
    
    private int getPosicaoRespostaCorreta()
    {
        return Integer.parseInt(this.cmbRespostaCorreta.getSelectedItem().toString()) - 1;
    }
    
     private void trocaStatusCamposQuestoes(boolean ehDiscursiva)
    {
        this.tbaResposta2.setEnabled(!ehDiscursiva);
        this.tbaResposta3.setEnabled(!ehDiscursiva);
        this.tbaResposta4.setEnabled(!ehDiscursiva);
    }
     
    private void populaComboRespostaCorreta(boolean ehDiscursiva)
    {
        this.cmbRespostaCorreta.removeAllItems();
        
        if(!ehDiscursiva)
        {
            this.cmbRespostaCorreta.addItem(1);
            this.cmbRespostaCorreta.addItem(2);
            this.cmbRespostaCorreta.addItem(3);
            this.cmbRespostaCorreta.addItem(4);
            this.cmbRespostaCorreta.setSelectedItem(questaoCorrente.getResposta());
        }
        
        this.cmbRespostaCorreta.setEnabled(!ehDiscursiva);
    }
     
     private void preenchePropriedadesQuestao(Questao questaoCorrente)
    {
        this.tbaEnunciado.setText(questaoCorrente.getPergunta());

        String respostaCorreta = questaoCorrente.getResposta();
        this.tbaResposta1.setText(respostaCorreta);

        this.cmbDificuldade.setSelectedItem(questaoCorrente.getDificuldade());

        String tipoQuestao = questaoCorrente.getTipoQuestao();
        this.cmbTipoQuestao.setSelectedItem(tipoQuestao);

        boolean ehDiscursiva = true;
        if(tipoQuestao.equalsIgnoreCase("Multipla Escolha"))
        {
            QuestaoMultiplaEscolha multiplaEscolha = (QuestaoMultiplaEscolha)questaoCorrente;
            preencheAlternativas(multiplaEscolha, respostaCorreta);

            ehDiscursiva = false;
            
            //default: resposta correta aparece na primeira caixa de texto
            this.cmbRespostaCorreta.setSelectedIndex(0);
        }

        populaComboRespostaCorreta(ehDiscursiva);
    }
     
     private void preencheAlternativas(QuestaoMultiplaEscolha multiplaEscolha, String respostaCorreta)
    {
        String[] alternativas = multiplaEscolha.getAlternativas();
        String[] alternativasSemResposta = removeRespostaCorreta(respostaCorreta, alternativas);

        this.tbaResposta2.setText(alternativasSemResposta[0]);
        this.tbaResposta3.setText(alternativasSemResposta[1]);
        this.tbaResposta4.setText(alternativasSemResposta[2]);
    }
     
     private String[] removeRespostaCorreta(String respostaCorreta, String[] alternativas)
    {
         String[] alternativasSemResposta = new String[3];
         int i = 0;

         for (String alternativa : alternativas)
         {
             if(!alternativa.equals(respostaCorreta))
             {
                alternativasSemResposta[i++] = alternativa;
             }
         }

         return alternativasSemResposta;
    }
}

